package com.jq.jqaicode.common.file;

import com.jq.jqaicode.common.ResultUtils;
import com.jq.jqaicode.model.enums.CodeGenTypeEnum;

import java.util.HashMap;
import java.util.Map;

/**
 * * 工厂+模版方法 实现代码解析和保存成文件
 */
public class CodeParserSaveExecutor {

    // 注册所有文件类型处理器
    private static final Map<CodeGenTypeEnum, CodeParserSaveTemplate> PROCESSOR_MAP = new HashMap<>();

    static {
        PROCESSOR_MAP.put(CodeGenTypeEnum.HTML, new HtmlCodeParserSave());
        PROCESSOR_MAP.put(CodeGenTypeEnum.MULTI_FILE, new MultiHtmlCodeParserSave());
        PROCESSOR_MAP.put(CodeGenTypeEnum.VUE_FILE, new VueCodeParserSave());
        // 后续支持更多类型直接put即可
    }

    // 根据文件类型动态获取并处理
    public static void executeParser(String appId, String message, CodeGenTypeEnum codeGenType) {
        CodeParserSaveTemplate processor = PROCESSOR_MAP.get(codeGenType);
        if (processor == null) {
            ResultUtils.runError("不支持的文件类型");
        }
        processor.codeParserSave(appId, message,codeGenType.getValue());
    }
}
